package com.hzz.dao.examine;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.hzz.dto.analysis.ExamineResultLevelStatDto;
import com.hzz.dto.analysis.ExamineResultRankStatDto;
import com.hzz.dto.examine.ApiExamineResultDto;
import com.hzz.dto.examine.ExamineResultDto;
import com.hzz.framework.dao.IBaseDao;
import com.hzz.framework.entity.IEntity;

/**
 * <p>
 * 目标考核-考核结果 数据库处理接口类。
 */
@Mapper
public interface IExamineResultDao extends IBaseDao {

	/**
	 * 判断是否存在
	 */
	@Override
	@Select("select IFNULL(count(0),0) as count from examine_result where  id = #{id} ")
	int isDataExist(IEntity entity) throws Exception;

	/**
	 * 逻辑删除
	 */
	@Override
	@Update("update examine_result set  date_updated=now(), del_flag=1 where  id = #{id} ")
	int deleteById(IEntity entity) throws Exception;

	/**
	 * 根据主键 物理删除
	 */
	@Override
	@Delete("delete from examine_result where  id = #{id} ")
	int deleteByPrimaryKey(IEntity entity) throws Exception;

	/**
	 * 查询下级考核结果列表
	 * 
	 * @param dto
	 * @return
	 */
	List<ExamineResultDto> findJuniorDataIsPage(ExamineResultDto dto);

	/**
	 * 根据行政区划和考核时间段查询考核结果给前端APP
	 * 
	 * @param dto
	 * @return
	 */
	List<ApiExamineResultDto> findDataForApp(ExamineResultDto dto);

	/**
	 * 考核排名统计
	 * 
	 * @param dto
	 * @return
	 */
	List<ExamineResultRankStatDto> statResultRankByParentAreaId(ExamineResultRankStatDto dto);

	/**
	 * 考核等级占比统计
	 * 
	 * @param dto
	 * @return
	 */
	List<ExamineResultLevelStatDto> statResultLevelByParentAreaId(ExamineResultLevelStatDto dto);

	/**
	 * 获取上年度考核前5名和后5名
	 * 
	 * @param type
	 *            1前5名，2后5名
	 * @return
	 */
	List<ExamineResultRankStatDto> getLastYearRank5(@Param("type") Integer type);
}